package com.fuyin.service.admin;

import com.fuyin.commons.response.BaseResponse;
import com.fuyin.dto.params.LoginParam;
import com.fuyin.dto.vo.Rzppd;
import com.fuyin.dto.vo.ZbDto;
import com.fuyin.dto.vo.ZdyzbDto;
import com.fuyin.dto.vo.ZdyzbModel;
import com.fuyin.entity.Fxb;
import com.fuyin.entity.OperationLog;
import com.fuyin.entity.ReportInfo;
import com.fuyin.entity.User;
import org.springframework.security.core.userdetails.UserDetails;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * @author yuanxilan (yuanxilan@keep.com)
 * @Description
 * @date 2021年10月26日 3:00 下午
 * @since
 */
public interface AdminService {

    /**
     * 获取用户详情
     *
     * @param userName
     * @return
     */
    UserDetails loadUserByUsername(String userName);

    BaseResponse login(LoginParam param);

    BaseResponse logout(String token);

    BaseResponse updateUserPassword(String token, String userName, String password, HttpServletRequest request);

    BaseResponse updateZB(ArrayList<ZdyzbDto> zdyzbs);

    BaseResponse updateZdyzbModel(String token, ZdyzbModel zdyzbModel);

    BaseResponse updateRzppd(String token, List<Rzppd> rzppds);

    BaseResponse<ArrayList<Rzppd>> getRzppd(String token);

    BaseResponse<ArrayList<ReportInfo>> getReportInfo(String token, Integer pageNum, Integer pageSize, Integer type);

    BaseResponse<ArrayList<User>> getAllUsers(String token, Integer pageNum, Integer pageSize);

    BaseResponse updateUserInfo(String token, User user, HttpServletRequest request);

    BaseResponse<ArrayList<OperationLog>> getOperationLogs(String token, Integer pageNum, Integer pageSize);

    BaseResponse<ArrayList<Fxb>> getFxbs();

    BaseResponse updateFxbs(ArrayList<Fxb> fxbs);

    BaseResponse<ZbDto> getZB();

    BaseResponse<ArrayList<ZdyzbModel>> getZdyzbModel();

    BaseResponse<User> getUserInfo(String token);
}
